# -*- coding: utf-8 -*-

''' Author: Susana Messias nº 6046 '''


#Class que cria a stack
class Stack:
        def __init__(self, N):
                self.top = -1
                self.S = [0 for k in xrange(N)]
                pass
        
        #Verifica se a stack se encontra vazia
        def stack_empty(self):
                if self.top < 0:
                        return True
                else:
                        return False
        
        #Verifica se a stack se encontra cheia
        def stack_full(self):
                if self.top >= len (self.S) -1:
                        return True
                else:
                        return False
                pass
                

        #Introduz valores na stack
        def push(self, x):
                self.top += 1
                self.S[self.top] = x
                pass
        
        #Devolve o que se encontra na stack
        def pop(self):
                if self.stack_empty():
                        return "underflow"
                else:
                        self.top -= 1
                        return self.S[self.top + 1]
                pass

        #Passa para string todo o conteúdo da stack
        def __str__(self):
                s = ""
                s += str(self.top+1) + ": "
                for k in range(0, self.top+1):
                        s += ' ' + str(self.S[k])
                return s
        pass
